package com.foreknow.view;

import com.foreknow.bean.Employee;
import com.foreknow.dao.impl.EmployeeDaoImpl;
import com.foreknow.service.EmployeeService;
import com.foreknow.service.impl.EmployeeServiceImpl;

import java.util.Scanner;

/**
 * 员工(Employee)管理系统
 * 1. 循环录入3次员工信息(员工的编号、姓名、工资、所在部门)
 * 2. 每录入一次员工信息就要将这条信息保存到数组中。
 * 3. 对数组的操作(添加员工信息、根据id查询某个员工、查询所有员工信息、修改某个员工信息)
 *
 * 思路：
 * 1. 这个需求需要创建几个类？  员工类Employee  管理类EmployeeManager  测试类 TestEmployee
 * 2. 类中写什么呢？
 *      Employee(员工的编号、姓名、工资、所在部门)
 *      EmployeeManager(添加员工信息、根据id查询某个员工、查询所有员工信息、修改某个员工信息)
 *      TestEmployee(循环录入3次员工信息)
 *
 */
public class TestEmployee {
    public static void main(String[] args) {
//        EmployeeManager manager = new EmployeeManager();
//        Scanner input = new Scanner(System.in);
//
//        //Employee[] emps = new Employee[3];
//        for (int i = 0;i < 3;i++) {
//            //用户输入信息
//            System.out.println("请输入编号: ");
//            int id = input.nextInt();
//            System.out.println("请输入姓名: ");
//            String name = input.next();
//            System.out.println("请输入工资: ");
//            double salary = input.nextDouble();
//            System.out.println("请输入所在部门: ");
//            String job = input.next();
//            //创建员工对象并将接收到数据给对象的属性赋值
//            //Employee employee = new Employee(id,name,salary,job); //通过构造器给属性一次性赋值
//            Employee employee = new Employee();
//            employee.setId(id);
//            employee.setName(name);
//            employee.setSalary(salary);
//            employee.setJob(job);
//            //每循环一次就要将以上对象添加到数组中
//            //emps[i] = employee;
//            manager.add(employee);
//        }
//
//        //调用EmployeeManager类中的根据id查询的方法
//        Employee e = manager.getQueryById(101);
//        System.out.println(e.getName());
//
//        //调用EmployeeManager类中的查询所有方法
//        Employee[] emps = manager.getQueryAll();
//        for (Employee employee :emps) {
//            System.out.println(employee.getName());
//        }
//
//        //调用修改的方法
//        Employee newInfo = manager.update(e);
//        System.out.println(newInfo.getName());
//
//        //遍历输出每个员工的信息
//        //        for (Employee e:emps) {
//        //            System.out.println(e.getName());
//        //        }
//        //
//        //        for(int i = 0;i<emps.length;i++) {
//        //            Employee e = emps[i];
//        //            System.out.println(e.getName());
//        //        }

        //1. 表现层调用业务层的方法先要创建业务层的对象
        EmployeeServiceImpl service = new EmployeeServiceImpl();
        service.setEmployeeDao(new EmployeeDaoImpl());
        //2. 调用Service层的添加方法
        Scanner input = new Scanner(System.in);
        for (int i = 0;i < 3;i++) {
            //用户输入信息
            System.out.println("请输入编号: ");
            int id = input.nextInt();
            System.out.println("请输入姓名: ");
            String name = input.next();
            System.out.println("请输入工资: ");
            double salary = input.nextDouble();
            System.out.println("请输入所在部门: ");
            String job = input.next();
            //创建员工对象并将接收到数据给对象的属性赋值
            //Employee employee = new Employee(id,name,salary,job); //通过构造器给属性一次性赋值
            Employee employee = new Employee();
            employee.setId(id);
            employee.setName(name);
            employee.setSalary(salary);
            employee.setJob(job);
            //每循环一次就要将以上对象添加到数组中
            service.add(employee);
        }


        Employee[] emps = service.getQueryAll();
        for (Employee e:emps) {
            System.out.println(e.getName());
        }
    }
}
